package com.corpgovernment.common.utils;

import com.ctrip.corp.obt.generic.utils.StringUtils;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDeciamlUtil {

    private static final BigDecimal ZERO = new BigDecimal(0);

    /**
     * 转String，去除末尾多余0
     */
    public static String toPlainString(BigDecimal num) {
        return num == null ? StringUtils.EMPTY : num.stripTrailingZeros().toPlainString();
    }

    /**
     * 单位换算成万，可保留六位小数
     */
    public static String toTenThousandStr(BigDecimal num) {
        return zeroOrNull(num) ? "--" : toPlainString(num.divide(new BigDecimal(10000), 6, RoundingMode.DOWN)) + "万";
    }

    /**
     * 单位换算成万，可保留六位小数
     */
    public static BigDecimal toTenThousand(BigDecimal num) {
        return zeroOrNull(num) ? null : num.divide(new BigDecimal(10000), 6, RoundingMode.DOWN);
    }

    /**
     * 为空或等于0
     */
    private static boolean zeroOrNull(BigDecimal num) {
        return num == null || num.compareTo(ZERO) == 0;
    }

    /**
     * 安全的比较方法（null永远认为是最小的，2个都是null则相等）
     *
     * @param source
     * @param target
     * @return
     */
    public static int safeCompare(BigDecimal source, BigDecimal target) {
        if (source == null && target == null) {
            return 0;
        } else if (source == null) {
            return -1;
        } else if (target == null) {
            return 1;
        }
        return source.compareTo(target);
    }
}